package errorcode

// 1. 通用成功与服务端相关错误码（1000 - 1999）
// SuccessCode 表示请求成功处理并返回期望结果，使用通用的成功码
var SuccessCode = NewError(1000, "请求成功")

// ServerBusyCode 用于提示客户端服务端暂时无法处理请求，可稍后重试
var ServerBusyCode = NewError(1999, "后端服务繁忙，请稍后再试")

// 2. 文件操作相关错误码（2000 - 2999）
// FileOpenErrorCode 打开文件句柄失败，可能是文件不存在、权限不足等原因导致
var FileOpenErrorCode = NewError(2001, "打开文件句柄失败，请检查文件是否存在及权限设置")

// FileUploadSizeLimitExceededCode 文件上传大小超出限制，用于限制用户上传文件不能超过特定大小
var FileUploadSizeLimitExceededCode = NewError(2002, "上传文件大小超过限制，请调整文件大小后重新上传")

var CheckFileContentTypeErrorCode = NewError(2003, "文件格式校验失败，请重新上传")

// 3. 授权认证相关错误码（4000 - 4999）
// AuthorizationTokenErrorCode 令牌相关的通用错误，比如令牌为空、格式错误等情况
var AuthorizationTokenErrorCode = NewError(4000, "令牌不能为空，请提供有效的令牌")
var InvalidTokenErrorCode = NewError(4001, "验证身份信息失败，请检查令牌是否有效")
var TokenGenerationFailureErrorCode = NewError(4002, "后端生成Token失败，请联系管理员")
var TokenExpiredErrorCode = NewError(4003, "登录状态过期，请重新登录")
var TokenParseErrorCode = NewError(4004, "身份验证失败，请重新登陆后尝试-1")
var JwtMalformedErrorCode = NewError(4005, "验证凭据格式错误，请检查令牌格式")
var AdminPermissionErrorCode = NewError(4008, "无权限进行该操作，请联系管理员")

// ThirdPartyAuthorizationErrorCode 第三方授权相关错误，比如微信、QQ等授权异常
var WeChatOAuth2FailureErrorCode = NewError(4006, "微信授权异常，请联系管理员")
var TencentOAuth2FailureErrorCode = NewError(4007, "QQ授权异常，请联系管理员")

// 4. 业务功能模块相关错误码
// RequestParamValidationErrorCode 请求参数校验整体失败，提示客户端检查请求参数是否符合要求
var RequestParamValidationErrorCode = NewError(3000, "请求参数校验失败，请检查请求参数是否完整且格式正确")

// UsernameValidationErrorCode 用户名相关的参数校验错误
var UsernameValidationErrorCode = NewError(3001, "用户名长度应大于5个字符并且小于12个字符")
var InvalidUsernameFormatErrorCode = NewError(3002, "用户名存在非法字符，请使用合法字符重新输入")
var UserNicknameExistsErrorCode = NewError(3003, "该昵称已被使用，请更换一个昵称后再试")

// PasswordValidationErrorCode 密码相关的参数校验错误
var PasswordValidationErrorCode = NewError(3004, "用户密码长度应大于8个字符并且小于16个字符并且包含任意特殊符号和大写字母")
var PasswordMismatchErrorCode = NewError(3005, "两次输入密码不一致，请重新输入")
var ChangeUserPasswordMismatchErrorCode = NewError(3006, "密码不匹配，请重新输入后尝试")

// UserLoginRegisterErrorCode 用户登录、注册相关的错误
var UserAlreadyExistsErrorCode = NewError(3007, "该用户已注册，请换个用户名再试试")
var UserLoginFailureErrorCode = NewError(3008, "登录失败，请检查用户名或密码是否正确")
var UserRegistrationFailureErrorCode = NewError(3009, "用户注册失败，请联系管理员")
var UserNotLoggedInErrorCode = NewError(3010, "未登录，请登录后重新尝试")
var ExcessiveLoginAttemptsErrorCode = NewError(3011, "登录失败次数过多，请30分钟后尝试")
var UserDisabledErrorCode = NewError(3012, "用户被禁用，请联系管理员")
var UserAccountBlockedErrorCode = NewError(3013, "当前账户已被封禁")
var UserLogoutFailureErrorCode = NewError(3014, "退出登录失败，请稍后再试")
var UserPhoneMismatchErrorCode = NewError(3015, "手机号格式输入错误，请重新输入后再试")
var UserInfoRetrievalErrorCode = NewError(3016, "获取用户信息失败，请检查相关配置或网络情况")
var UserInfoCachingErrorCode = NewError(3017, "缓存用户信息失败，请联系管理员")
var UserCacheKeyNotFoundErrorCode = NewError(3018, "用户缓存信息查询失败，请确认缓存配置及缓存键是否正确")
var DescriptionLengthExceededErrorCode = NewError(3019, "签名太长了哦，请适当缩短签名长度")
var FollowUserFailureErrorCode = NewError(3020, "关注用户失败，请检查网络或权限等情况后重试")
var AlreadyFollowingUserErrorCode = NewError(3021, "已经关注过这个用户啦，换个人试试吧")
var UserDoesNotExistErrorCode = NewError(3022, "-1用户名或密码不正确，请检查后重新登录")
var UserAccountSignoutErrorCode = NewError(3023, "用户账号已注销，请联系管理员")
var InvalidUserGenderErrorCode = NewError(3024, "用户性别输入错误，请重新输入后再试")
var UpdateUserInfoErrorCode = NewError(3025, "更新用户信息失败，请联系管理员")
var SearchUserNotFoundErrorCode = NewError(3026, "没有找到相关用户")

// ArtBoardInfoRetrievalErrorCode 画板相关操作错误，获取画板信息失败相关
var ArtBoardInfoRetrievalErrorCode = NewError(5000, "获取画板信息失败，请检查相关配置或网络情况")
var ArtBoardTitleTooLongErrorCode = NewError(5001, "画板标题太长了，请重新编辑一下标题")
var ArtBoardCreationFailureErrorCode = NewError(5002, "创建画板失败，请联系管理员")
var ArtBoardListErrorCode = NewError(5003, "获取画板列表失败，请联系管理员")
var UploadArtBoardImageErrorCode = NewError(5004, "上传画板图片失败，请联系管理员")
var CreateCategoriesErrorCode = NewError(5005, "创建分类失败，请联系管理员")
var CategoryAlreadyExistsErrorCode = NewError(5006, "分类已存在，请重新输入")

// FeedbackInfoRetrievalErrorCode 反馈相关操作错误，获取反馈信息失败相关
var FeedbackNotFoundErrorCode = NewError(5050, "反馈记录不存在")
var FeedbackStatusInvalidErrorCode = NewError(5051, "反馈状态不合法")
var FeedbackCreationFailureErrorCode = NewError(5052, "创建反馈失败，请联系管理员")

//加密、密钥相关错误码（6000 - 6999）

// RsaPublicKeyParseErrorCode 解析公钥信息相关错误
var RsaPublicKeyParseErrorCode = NewError(6001, "解析公钥信息失败，请检查公钥格式及配置")

// RsaPrivateKeyParseErrorCode 解析私钥信息相关错误
var RsaPrivateKeyParseErrorCode = NewError(6002, "信息认证失败，请检查私钥相关配置")

// SmsCodeSendExcessiveTimesErrorCode 短信验证码发送相关错误，发送次数过多情况
var SmsCodeSendExcessiveTimesErrorCode = NewError(7001, "验证码发送次数过多，请稍后再试")
var SmsCodeSendFailureErrorCode = NewError(7002, "验证码发送失败，请检查短信服务是否正常")

// SmsCodeVerificationErrorCode 短信验证码验证相关错误
var SmsCodeVerificationErrorCode = NewError(7003, "验证码不正确，请重新输入正确的验证码")
var SmsCodeVerificationExcessiveTimesErrorCode = NewError(7004, "验证次数过多，请5分钟后重试")
var SmsCodeExpiredErrorCode = NewError(7005, "验证码已经过期，请尝试重新获取")
var SmsCodeSystemErrorErrorCode = NewError(7006, "验证码系统异常，请联系管理员")

// ExcessiveRequestErrorCode 用于兜底的其他通用错误情况，比如请求过于频繁等
var ExcessiveRequestErrorCode = NewError(8001, "请求次数过多，请稍后重新进行尝试")

// func CodeMsg(c ResCode) string {
// 	msg, ok := codeMsgMap[c]
// 	// 进行逻辑非得判断,如果请求的code不在定义的范围内,默认返回CodeServerBusy状态异常
// 	if !ok {
// 		msg = codeMsgMap[CodeServerBusy]
// 	}
// 	return msg
// }
